/**
 * 如果a等于b，则返回true，而不会泄露允许攻击者猜测其中一个值的计时信息。
 * @param {string} a String a.
 * @param {string} b String b.
 * @returns {boolean} Equality result.
 */
export const timingSafeEqual = (a: string, b: string): boolean => {
  if (a.length !== b.length) {
    return false;
  }
  let i = -1;
  let out = 0;
  while (++i < a.length) {
    out |= a.charCodeAt(i) ^ b.charCodeAt(i);
  }
  return out === 0;
};
